import { request, requestPayment } from "../../utils/index";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data: {
    address: null,
    cart: {},
    totalPrice: 0,
    nums: 0
  },
  onShow() {
    // 地址
    let address = wx.getStorageSync("address") || {};
    // 购物车信息 cart等于 isChecked=true 的 值 
    let cart = wx.getStorageSync("cart") || {};


    // 过滤 获取 isChecked=true 商品
    let newCart = Object.values(cart).filter(v => v.isChecked);

    address.detailAddress = address.provinceName + address.cityName + address.countyName + address.detailInfo;

    this.setData({ address, cart: newCart });

    // 计算总价格
    this.accountPriceNums();
  },
  accountPriceNums() {
    // 1 获取cart对象
    let { cart } = this.data;
    // 总价的和 购买种类 
    let totalPrice = 0;
    let nums = 0;
    // 2 循环cart对象
    for (const key in cart) {
      if (cart.hasOwnProperty(key)) {
        //  4 判断该商品是否被选中
        if (cart[key].isChecked) {
          // 计算总价格
          totalPrice += cart[key].goods_price * cart[key].count;
          // 设置 购买的种类的数量
          nums++;
        }
      }
    }
    this.setData({
      totalPrice,
      nums
    })
  },
  async handlePay() {

    // 构造获取订单编号要的参数
    let createOrderParams = () => {
      // 订单价格 订单地址
      const { totalPrice } = this.data;
      const { detailAddress } = this.data.address;
      // 获取 订单要的 商品数组
      let goods = Object.values(this.data.cart).map((v) => {
        return {
          goods_id: v.goods_id,
          goods_number: v.count,
          goods_price: v.goods_price
        }
      });
      // let goods = [];
      // for (const key in this.data.cart) {
      //   if (this.data.cart.hasOwnProperty(key)) {
      //     this.data.cart[key];
      //     goods.push({
      //       goods_id:  this.data.cart[key].goods_id,
      //       goods_number:  this.data.cart[key].count,
      //       goods_price:  this.data.cart[key].goods_price
      //     })
      //   }
      // }

      return {
        order_price: totalPrice, consignee_addr: detailAddress, goods
      }
    };

    // 1 获取本地存储中的 token =""
    const token = wx.getStorageSync("token");
    // 2 没有 token 直接跳转到授权页面去获取token
    if (!token) {
      // 没有token 跳转到授权页面
      console.log("没有token");
      wx.navigateTo({
        url: '../auth/index'
      });

    } else {
      try {
        
      // 1 获取 订单编号要的参数
      let ordersParmas = createOrderParams();
      //  2 获取订单编号  要发送请求  请求头 
      // const header = {
      //   "Authorization": token
      // };
      const { order_number } = (await request({ url: "my/orders/create", method: "post", data: ordersParmas }));
      // 3 获取支付参数 pay 
      const { pay } = (await request({ url: "my/orders/req_unifiedorder", method: "post", data: { order_number } }));
      // 4 调用微信小程序 内置 支付的api 
      const res = await requestPayment(pay);
      // 5 查看自己后台的 接口中的 返回值来判断 
      const res2=await request({url:"my/orders/chkOrder",method:"post",data:{order_number}});
      // 代码到了这里就表示是正常的执行过程 就 ok
      wx.showToast({
        title: '支付成功',
        icon: 'success',
        duration: 1500,
        mask: true
      });

      // 6 删除本地存储中 isChecked=true 商品对象 同步到本地存储中
      // 过滤 isChecked =false 值 对象 重新 把这些值设置到 本地存储中就可以了 
      // 获取本地存储中的cart对象 包含有 选中和未选择 
      let allCart=wx.getStorageSync("cart");
      let newCartArr=Object.values(allCart).filter(v=>!v.isChecked);
      let newCart={};
      newCartArr.forEach(v=>{
        newCart[v.goods_id]=v;
      });
      wx.setStorageSync("cart", newCart);
        
      // 7 跳转到订单页面
      wx.navigateTo({
        url: '../order/index'
      });
      } catch (error) {
        console.log("错误提示信息");
        console.log(error);
        wx.showToast({
          title: error,
          duration: 1500,
          mask: true
        });
      }
    }

  },

})